//
//  SqlValue.h
//  Phidgets
//
//  Created by Daniel Hazelbaker on 11/19/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#ifndef __SQLVALUE_H__
#define __SQLVALUE_H__

#include <sqlite3.h>
#include <map>
#include <string>


class SqlValue;

typedef enum {
    SqlValue_Null = 0,
    SqlValue_Int = 1,
    SqlValue_String = 2
} SqlValueType;

typedef std::map<std::string, SqlValue> SqlValues;


class SqlValue
{
private:
    SqlValueType _type;
    int _intValue;
    std::string _stringValue;
    
public:
    SqlValue() { _type = SqlValue_Null; }
    SqlValue(int value) { _type = SqlValue_Int; _intValue = value; }
    SqlValue(std::string value) { _type = SqlValue_String; _stringValue = std::string(value); }
    SqlValue(const char *value) { _type = SqlValue_String; _stringValue = std::string(value); }
    ~SqlValue();
    
    void bindValue(sqlite3_stmt *statement, int index);
    
    std::string &stringValue() { return _stringValue; }
    int intValue() { return _intValue; }
    bool isNull() { return (_type == SqlValue_Null); }
};



#endif /* __SQLVALUE_H__ */


